package com.iflytek.ssm.erp.entity;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.Date;

/**
 * 客户信息实体类
 * 对应表：customer
 */
public class Customer  {

    /**
     * 客户唯一ID（主键，自增）
     */
    private Integer id;

    /**
     * 客户名称（必填）
     */
    private String name;

    /**
     * 联系人
     */
    private String contactPerson; // 驼峰命名（对应数据库下划线命名：contact_person）

    /**
     * 手机号码
     */
    private String mobile;

    /**
     * 联系电话
     */
    private String phone;

    /**
     * 电子邮箱
     */
    private String email;

    /**
     * 传真
     */
    private String fax;

    /**
     * 期初应收
     */
    private BigDecimal initialReceivable; // 对应 initial_receivable

    /**
     * 期末应收
     */
    private BigDecimal finalReceivable; // 对应 final_receivable

    /**
     * 纳税人识别号（必填）
     */
    private String taxpayerId; // 对应 taxpayer_id

    /**
     * 税率(%)
     */
    private BigDecimal taxRate; // 对应 tax_rate

    /**
     * 开户行
     */
    private String bankName; // 对应 bank_name

    /**
     * 银行账号
     */
    private String bankAccount; // 对应 bank_account

    /**
     * 地址
     */
    private String address;

    /**
     * 排序序号
     */
    private Integer sortNum; // 对应 sort_num

    /**
     * 备注
     */
    private String remark;

    /**
     * 创建人（关联用户表ID）
     */
    private Integer createId; // 对应 create_id

    /**
     * 创建时间
     */
    private Date createTime; // 对应 create_time（JDK8+ 推荐使用LocalDateTime，替代Date）


    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getContactPerson() {
        return contactPerson;
    }

    public void setContactPerson(String contactPerson) {
        this.contactPerson = contactPerson;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getFax() {
        return fax;
    }

    public void setFax(String fax) {
        this.fax = fax;
    }

    public BigDecimal getInitialReceivable() {
        return initialReceivable;
    }

    public void setInitialReceivable(BigDecimal initialReceivable) {
        this.initialReceivable = initialReceivable;
    }

    public BigDecimal getFinalReceivable() {
        return finalReceivable;
    }

    public void setFinalReceivable(BigDecimal finalReceivable) {
        this.finalReceivable = finalReceivable;
    }

    public String getTaxpayerId() {
        return taxpayerId;
    }

    public void setTaxpayerId(String taxpayerId) {
        this.taxpayerId = taxpayerId;
    }

    public BigDecimal getTaxRate() {
        return taxRate;
    }

    public void setTaxRate(BigDecimal taxRate) {
        this.taxRate = taxRate;
    }

    public String getBankName() {
        return bankName;
    }

    public void setBankName(String bankName) {
        this.bankName = bankName;
    }

    public String getBankAccount() {
        return bankAccount;
    }

    public void setBankAccount(String bankAccount) {
        this.bankAccount = bankAccount;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public Integer getSortNum() {
        return sortNum;
    }

    public void setSortNum(Integer sortNum) {
        this.sortNum = sortNum;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public Integer getCreateId() {
        return createId;
    }

    public void setCreateId(Integer createId) {
        this.createId = createId;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    @Override
    public String toString() {
        return "Customer{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", contactPerson='" + contactPerson + '\'' +
                ", mobile='" + mobile + '\'' +
                ", phone='" + phone + '\'' +
                ", email='" + email + '\'' +
                ", fax='" + fax + '\'' +
                ", initialReceivable=" + initialReceivable +
                ", finalReceivable=" + finalReceivable +
                ", taxpayerId='" + taxpayerId + '\'' +
                ", taxRate=" + taxRate +
                ", bankName='" + bankName + '\'' +
                ", bankAccount='" + bankAccount + '\'' +
                ", address='" + address + '\'' +
                ", sortNum=" + sortNum +
                ", remark='" + remark + '\'' +
                ", createId=" + createId +
                ", createTime=" + createTime +
                '}';
    }
}